<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<script>
  /**
   * bind()方法不会调用函数,但是可以改变函数的指向问题
   * fun.bind(thisArg,arg1,arg2...)
   * thisArt: 在fun函数运行时指定的this对象
   * arg1..: 函数传递的其他参数
   * 返回由指定的this值和初始化参数改造的原函数拷贝
   */
  var o ={
    name:'tom'
  }
  function say(arr) {
    console.log(this)
  }
  var say1 = say.bind(o);
  say1()
  //bind不会调用函数,并且可以改变this指向,返回值是更改过this的新函数

  //实用案例 我们有一个按钮,当我们点击了之后,就禁用这个按钮,3秒钟之后开启这个按钮
  var btn = document.querySelector('burron')
  btn.onclick = function(){
    this.disabled = true;
    setTimeout(function(){
      this.disabled = false
    }.bind(btn),3000);
  }
  // call apply bind 总结
  他们都可以改变this的指向

  1.call和apply 会调用函数
  2.call和apply传递的参数不一样,call传递参数arg1,arg2, apply传递数组[arg]
  3.bind 不会调用函数,参数传递和call相同

</script>
</body>
</html>